import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel';

export type UploadFilePageParam = BasicPageParams & {
  id?: string;
  UUID?: string;
  fileStorageId?: string;
  name?: string;
  type?: string;
  suffix?: string;
  state?: string;
};

export type FileFolderPageParam = BasicPageParams & {
  name?: string;
  parentFolderId?: string;
  fileStorageId?: string;
};

export type FileStoragePageParam = BasicPageParams & {
  fileUserId?: string;
};
export type FileUserPageParam = BasicPageParams & {
  userId?: string;
  fileStorageId?: string;
};
export type FileServicePageParam = BasicPageParams & {
  
};
export type SignEventPageParam = BasicPageParams & {
  eventName?: string;
};
export type SignAttendancePageParam = BasicPageParams & {
  username?: string;
  eventName?: string;
};
export type SignPointPageParam = BasicPageParams & {
  username?: string;
};

/**
 * ListItem
 */
export interface ArticleListItem {
  id?: string;
  title?: string;
  content?: string;
  url?: string;
  thumbnail?: string;
  status?: number;
  hidden?: number;
  userId?: string;
  views?: number;
  deleted?: number;
  gmtCreated?: string;
  modifiedUserId?: string;
  gmtModified?: string;
}

export interface TagListItem {
  id?: string;
  name?: string;
  url?: string;
}

export interface CategoryListItem {
  id?: string;
  name?: string;
  url?: string;
}

export interface CommentListItem {
  id?: string;
  userId?: string;
  entityType?: number;
  entityId?: string;
  targetId?: string;
  content?: string;
  status?: string;
  gmtCreated?: string;
  userVo?: object;
  childrens?: object;
  childrenCount?: number;
}

export interface SignEventListItem {
  id?: string;
  name?: string;
  startTime?: string;
  endTime?: string;
}
export interface SignAttendanceListItem {
  id?: string;
  userId?: string;
  eventId?: string;
  checkinTime?: string;
  checkinDate?: string;
}
export interface SignPointListItem {
  id?: string;
  userId?: string;
  point?: number;
  gmtModified?: string;
}

/**
 * AddParam
 */
 export type FileUserAddParam = {
  userId?:string,
  fileStorageId?:string,
};

export type FileStorageAddParam = {
  fileUserId?:string,
  currentSize?:string,
  maxSize?:string,
  permission?: string,
};

export type FileFolderAddParam = {
  name?: string;
  parentFolderId?: string;
  fileStorageId?: string;
};

export type SignEventAddParam = {
  name?: string;
  startTime?: string;
  endTime?: string;
};
export type SignPointAddParam = {
  userId?: string;
  point?: number;
};

/**
 * UpdatedParam
 */



export type UploadFileUpdatedParam = {
  id?: string;
  name?:string;
};
export type FileUserUpdatedParam = {
  id?: string;
  userId?: string;
  fileStorageId?: String;
};
export type FileStorageUpdatedParam = {
  id?: string;
  currentSize?: string;
  maxSize?: string;
  permission?: string;
};
export type FileFolderUpdateParam = {
  id?: string;
  name?: string;
  parentFolderId?: string;
  fileStorageId?: string;
};


export type TagUpdatedParam = {
  id?: string;
};
export type SignEventUpdatedParam = {
  id?: string;
};
export type SignPointUpdatedParam = {
  id?: string;
};

/**
 * @description: Request list return value
 */
export type ArticleListGetResultModel = BasicFetchResult<ArticleListItem>;

export type TagPageListGetResultModel = BasicFetchResult<TagListItem>;

export type CategoryPageListGetResultModel = BasicFetchResult<CategoryListItem>;

export type SignEventPageListGetResultModel = BasicFetchResult<SignEventListItem>;

export type SignAttendancePageListGetResultModel = BasicFetchResult<SignAttendanceListItem>;

export type SignPointPageListGetResultModel = BasicFetchResult<SignPointListItem>;
